package com.yuanjin.util;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;

/*
 * 类LoadataThread
 * 功能：上传数据的线程
 * 参数输入�?
 * map：所要传输的账号、密码等键�?�?
 * handler：用于子线程向主线程反馈信息
 * path:�?��调用的服务器处理方向路径
 */
public class LoaddataThread extends Thread {
	private Map<String, String> map = new HashMap<String, String>();
	private Handler handler;
	
	private String path;
	private Vector<Object> returnVector;
	private int sum = 0;

	public LoaddataThread(Map<String, String> map, Handler handler, String path) {
		this.map = map;
		this.handler = handler;
		this.path = path;
	}

	// public LoaddataThread(Map<String, String> map, String path) {
	// this.map = map;
	// this.path = path;
	// }

	@Override
	public void run() {
		HttpUpload httpUpload = new HttpUpload();
		String result = httpUpload.sendHttpClientPost(path, map, "utf-8");

		/**** 起初使用定长数组接受数据 ****/
		// String[] resultarray = new String[2];
		// resultarray = result.split("@@@");
		// substring(index):截取该位置（包括该位置）后所有字符
		// ﻿因为返回的字符前带有一个字符?，如:"?哈哈",因此需要将其去掉,而且第一个有效字符位于第4位
		// result = resultarray[0].substring(3);//
		// 经多次实验，从第四位截取才真正完全取到服务器发送下来的数据，否则会带有一些空格的字符

		/**** 而由于传送下来的数据量多少未知，因而使用长度可变的vector来接收会更好 ****/
		// Vector<Object> vector;// Vector定义，为共用一个vector，改为static型
		// 实现数组变vector
		returnVector = new Vector<Object>(Arrays.asList(result.split("@@@")));
		result = returnVector.get(0).toString().substring(2);// 截取"验证通过"等反馈字段

		Log.e("logtest", result + "nihao");

		Looper.prepare();
		// handler= new Handler();
		if (result.equals("注册成功")) {
			handler.sendEmptyMessage(1);
		} else if (result.equals("用户名已存在")) {
			handler.sendEmptyMessage(2);
		} else if (result.equals("用户名不存在")) {
			handler.sendEmptyMessage(3);
		} else if (result.equals("密码不正确")) {
			handler.sendEmptyMessage(4);
		} else if (result.equals("验证通过")) {
			sum = Integer.parseInt(returnVector.get(1).toString());// 截取数据总数
			String usercontent = returnVector.get(2).toString();// 第三段则为存储了数据的字符串段
			Log.e("sum", Integer.toString(sum));
			Log.e("logtest", returnVector.get(1) + "第二部分");
			Log.e("logtest", returnVector.get(2) + "第三部分");
			Message msg = new Message();
			msg.what = 5;
			msg.obj = usercontent;
			msg.arg1 = sum;
			handler.sendMessage(msg);// 使用Handler传送数据
			// handler.sendEmptyMessage(5);
		} else if (result.equals("数据查询")) {
			sum = Integer.parseInt(returnVector.get(1).toString());// 截取数据总数
			String usercontent = returnVector.get(2).toString();// 第三段则为存储了数据的字符串段
			String username = returnVector.get(3).toString();// 第四段则为存储了用户名数据的字符串段
			String time = returnVector.get(4).toString();// 第5段则为存储了时间数据的字符串段
			String returndata = usercontent + "@@@" + username + "@@@" + time;
			Log.e("sum", Integer.toString(sum));
			Log.e("LoaddataThread-returnVector: ", returnVector.get(1) + "第二部分");
			Log.e("LoaddataThread-returnVector: ", returnVector.get(2) + "第三部分");
			Log.e("LoaddataThread-returnVector: ", returnVector.get(3) + "第四部分");
			Message msg = new Message();
			msg.what = 6;
			msg.obj = returndata;
			msg.arg1 = sum;
			handler.sendMessage(msg);// 使用Handler传送数据
			// handler.sendEmptyMessage(5);
		} else if (result.equals("数据上传成功")) {
			// sum = Integer.parseInt(returnVector.get(1).toString());// 截取数据总数
			// String usercontent = returnVector.get(2).toString();//
			// 第三段则为存储了数据的字符串段
			// String username = returnVector.get(3).toString();//
			// 第四段则为存储了用户名数据的字符串段
			// String time = returnVector.get(4).toString();// 第5段则为存储了时间数据的字符串段
			// String returndata=usercontent+"***"+username+"***"+time;
			// Log.e("sum", Integer.toString(sum));
			Log.e("logtest", result + "第1nnnnnnnnnnnnnnnnnnnnnnnnnnn");
			// Log.e("logtest", returnVector.get(2) + "第三部分");
			// Log.e("logtest", returnVector.get(3) + "第四部分");
			// Message msg = new Message();
			// msg.what = 6;
			// msg.obj = returndata;
			// msg.arg1 = sum;
			// handler.sendMessage(msg);// 使用Handler传送数据
			// handler.sendEmptyMessage(5);
		} else if (result.equals("firstin")) {// 表明为在机子上第一次使用
			Log.e("logtest_firstin", result
					+ "/******************* firstIn **********************/");
		} else if (result.equals("localzero")) {// 表明为在机子上第一次使用，更新本地数据量值
			sum = Integer.parseInt(returnVector.get(1).toString());// 截取数据总数
			Message msg = new Message();
			msg.what = 8;
			msg.arg1 = sum;
			handler.sendMessage(msg);// 使用Handler传送数据
			Log.e("logtest_firstin", result
					+ "/******************* localzero **********************/"+Integer.toString(sum)); 
		}else if (result.equals("nodataupdate")) {//没有新数据需要更新
			Log.e("logtest_nodataupdate", result
					+ "/******************* nodataupdate **********************/"); 
		}

	}

}